<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>camkes-3.8.x-compatible-arm-old | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/updates/camkes-vm">
              <span property="name"><b>camkes-vm Recent Updates</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">camkes-3.8.x-compatible-arm-old</span>
            <meta property="position" content="3" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">
















</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="updates-to-camkes-arm-vm-from-camkes-37x-to-camkes-380">Updates to camkes-arm-vm from camkes-3.7.x to camkes-3.8.0</h1>

<ul>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Load kernel and dtb images using <code class="language-plaintext highlighter-rouge">FileServer</code>.
This now uses the same mechanism as the x86 <code class="language-plaintext highlighter-rouge">Init</code> VM component.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Add basic module abstraction.  This allows compilation units
to declare modules that the vmm will
initialise without having to directly call the init function. This
should reduce the amount of <code class="language-plaintext highlighter-rouge">#ifdefs</code> throughout the code.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Create <code class="language-plaintext highlighter-rouge">map_frame_hack</code> module.
This is a hack that was used in the <code class="language-plaintext highlighter-rouge">SMACCM</code> demo for giving the VM direct
memory access to a crypto component.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Create <code class="language-plaintext highlighter-rouge">device_fwd</code> module for tk1.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Create <code class="language-plaintext highlighter-rouge">vchan</code> module. This moves the vchan source into its own module.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Move remaining <code class="language-plaintext highlighter-rouge">vmlinux.c</code> code to per-platform init modules.</li>
  <li>Add initial aarch64 support.</li>
  <li>Add initial TX1 support.</li>
  <li>Rename <code class="language-plaintext highlighter-rouge">tk1_vm</code> to <code class="language-plaintext highlighter-rouge">vm_minimal</code> as this app supports more than one platform.</li>
  <li><code class="language-plaintext highlighter-rouge">vm_minimal</code>: Added Exynos5422 support.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Perform <code class="language-plaintext highlighter-rouge">map_unity_ram</code> on Exynos5422.  This allows for
a one-to-one PA&lt;-&gt;IPA mapping of the guest RAM device on the exynos5422.</li>
  <li>Remove duplicate frames from <code class="language-plaintext highlighter-rouge">vm_odroid.camkes</code>.
The new CapDL allocator will not permit separate objects with the same
physical address. This change makes the <code class="language-plaintext highlighter-rouge">vm_odroid</code> share its hardware MMIO objects
without duplicating them.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Install <code class="language-plaintext highlighter-rouge">vpci</code> device. Added call to the <code class="language-plaintext highlighter-rouge">sel4arm-vmm</code> in order to install the virtual
pci device in the guest VM.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Added <code class="language-plaintext highlighter-rouge">virtio_net</code> module.
This introduces the <code class="language-plaintext highlighter-rouge">virtio_net</code> module. This initializes and
manages the virtio net driver in the guest VM. The module
is a basic demonstration that responds to ARP request packets.
This is refactored out of the x86 VMM (<code class="language-plaintext highlighter-rouge">camkes-vm</code>).</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Support for loading <code class="language-plaintext highlighter-rouge">initrd</code> vm module.
Attempts to load an <code class="language-plaintext highlighter-rouge">initrd</code> module if provided in the CPIO archive.
This is loaded in the kernel lowmem alongside the dtb.</li>
  <li><code class="language-plaintext highlighter-rouge">vm_minimal</code>: Added rootfs to archive for exynos5422.
Updated the <code class="language-plaintext highlighter-rouge">vm_minimal</code> <code class="language-plaintext highlighter-rouge">CMakeLists.txt</code> to pass the linux-initrd file
to the file server. This change pertains to the exynos5422
platform.</li>
  <li><code class="language-plaintext highlighter-rouge">vm_virtio_net</code>: New virtio_net application.
Added <code class="language-plaintext highlighter-rouge">vm_viritio_net</code> application. This is currently target to
the exynos5422 platform. The application demonstrates the use
user level linux overlays, adding an arping test and network
interface file to test virtio net functionality in the vm.</li>
  <li>Add griddle support:
    <ul>
      <li>Migrate <code class="language-plaintext highlighter-rouge">RELEASE</code> and <code class="language-plaintext highlighter-rouge">CAMKES_VM_APP</code> to <code class="language-plaintext highlighter-rouge">easy-settings.cmake</code>.</li>
      <li>Give <code class="language-plaintext highlighter-rouge">CAMKES_VM_APP</code> a default of <code class="language-plaintext highlighter-rouge">vm_minimal</code>.</li>
      <li>Add <code class="language-plaintext highlighter-rouge">PLATFORM</code> to <code class="language-plaintext highlighter-rouge">easy-settings.cmake</code> as well; default <code class="language-plaintext highlighter-rouge">tx1</code>.</li>
    </ul>
  </li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Added TX2 Support.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Added GlobalAsynch notification to the VM.
Added support for a global async notification within the VM
component. This supports additional components in the system to
send notifications to the VM.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Added Virtio Net <code class="language-plaintext highlighter-rouge">virtqueue</code> module.
Added a new VM module that forwards and recieves packets through
virtqueues. This allows packets to be forwarded to another
component in the system and in addition for the connected component
to send messages to the VM.</li>
  <li><code class="language-plaintext highlighter-rouge">vm_virtio_net</code>: Added ping echo response client.
Added an example camkes application that uses the VM’s virtio
net support to recieve and reply to arping and [icmp] ping
packets sent by the connect guest VM. This is performed over
virtqueues.</li>
  <li><code class="language-plaintext highlighter-rouge">serial-server-app</code>: added console support libvirtio.
Added console support to libvirtio library.
This copys the same setup as net where we install
a vpci device. Uses linux hvc0 device to communicate with
the camkes serial server through the vm.</li>
  <li><code class="language-plaintext highlighter-rouge">virtio-con</code>: Add module for virtual console.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Added CPP Macro configuration helpers.
Added a set of CPP macro helpers that can be used to configure
a camkes arm vm application. These can be used in substitute of
the vm_common.camkes file.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Memory and image settings as camkes attributes.
Refactored the definitions of the linux guest attributes (e.g. ram
base, size, image names) into camkes attributes. This makes the
VM component more configurable, removing the need to have to hard
code values into the source. Updated the vm apps and component
source to reflect these changes.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Update common sources for new IRQ server changes in libsel4utils.</li>
  <li>Remove Configuration library and append <code class="language-plaintext highlighter-rouge">#include &lt;&lt;lib_name&gt;/gen_config.h&gt;</code> after each
  <code class="language-plaintext highlighter-rouge">#include &lt;autoconf.h&gt;</code> since <code class="language-plaintext highlighter-rouge">autoconf.h</code> is only for the kernel and libsel4 config now.</li>
  <li>templates: Added new template <code class="language-plaintext highlighter-rouge">seL4VMDTBPassthrough</code>.
Added a new template/interface that can be used in a camkes
arm vm app. <code class="language-plaintext highlighter-rouge">seL4VMDTBPassthrough</code> allows users to define a series
of dtb nodes that will in turn be converted into a series of
untyped memory and irq objects. This can then be used for passing
the devices through to the guest vm. This is an alternative
interface that can be used as opposed to specifying two
independent lists of untypes and irqs.</li>
  <li><code class="language-plaintext highlighter-rouge">VM</code>: Component support for the <code class="language-plaintext highlighter-rouge">seL4VMDTBPassthrough</code>.
Added support for the <code class="language-plaintext highlighter-rouge">seL4VMDTBPassthrough</code> template in the VM
component. This in particular will add the untypes presented by
the passthrough template and updating the camkes simple interface
to account for the dtb irq caps.</li>
  <li><code class="language-plaintext highlighter-rouge">vm_minimal</code>, <code class="language-plaintext highlighter-rouge">vm_serial</code>, <code class="language-plaintext highlighter-rouge">vm_virtio_net</code>, <code class="language-plaintext highlighter-rouge">odroid_vm</code>: Updated to use <code class="language-plaintext highlighter-rouge">seL4VMDTBPassthrough</code>.
Updated the device configurations to the use <code class="language-plaintext highlighter-rouge">seL4VMDTBPassthrough</code>.
This converts the untyped and irq arrays into a single dtb query
array.</li>
  <li>Update <code class="language-plaintext highlighter-rouge">ping_client</code> to use the new virtqueue lib.
Introduces the necessary changes for the ping client to use the new
libvirtqueue with multi-entry rings and scatter buffer logic.</li>
  <li>Added support for the QEMU virt platform, starting a linux VM with buildroot.</li>
</ul>



  </div>







  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> camkes-vm </h2> 
        <li>
          
          <a style="" class="" href="/projects/camkes-vm/">
            Documentation homepage
          </a>
        </li>

















    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/seL4/camkes-vm">
            camkes-vm
          </a>
        </li>

    
        <li>
          <a class="" href="https://github.com/seL4/camkes-vm-examples">
            camkes-vm-examples
          </a>
        </li>

    
        <li>
          <a class="" href="https://github.com/seL4/camkes-vm-examples-manifest">
            camkes-vm-examples-manifest
          </a>
        </li>









  







    
        <h3>Recent Updates</h3>
    
        <li>
          <a style=" font-weight: bold; " href="/updates/camkes-vm/camkes-3.8.x-arm-old.html">
            camkes-3.8.x-compatible-arm-old
          </a>
        </li>

    
        <li>
          <a style="" href="/updates/camkes-vm/camkes-3.8.x.html">
            camkes-3.8.x-compatible
          </a>
        </li>

    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/content_collections/_updates/camkes-vm/camkes-3.8.x-arm-old.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/content_collections/_updates/camkes-vm/camkes-3.8.x-arm-old.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
